Date.prototype.lunar = function(){
	var CalendarData=new Array(100);
	var madd=new Array(12);
	var tgString="甲乙丙丁戊己庚辛壬癸";
	var dzString="子丑寅卯辰巳午未申酉戌亥";
	var numString="一二三四五六七八九十";
	var monString="正二三四五六七八九十冬腊";
	var weekString="日一二三四五六";
	var sx="鼠牛虎兔龙蛇马羊猴鸡狗猪";
	var cYear,cMonth,cDay,TheDate;
	CalendarData = new Array(0xA4B,0x5164B,0x6A5,0x6D4,0x415B5,0x2B6,0x957,0x2092F,0x497,0x60C96,0xD4A,0xEA5,0x50DA9,0x5AD,0x2B6,0x3126E, 0x92E,0x7192D,0xC95,0xD4A,0x61B4A,0xB55,0x56A,0x4155B, 0x25D,0x92D,0x2192B,0xA95,0x71695,0x6CA,0xB55,0x50AB5,0x4DA,0xA5B,0x30A57,0x52B,0x8152A,0xE95,0x6AA,0x615AA,0xAB5,0x4B6,0x414AE,0xA57,0x526,0x31D26,0xD95,0x70B55,0x56A,0x96D,0x5095D,0x4AD,0xA4D,0x41A4D,0xD25,0x81AA5,0xB54,0xB6A,0x612DA,0x95B,0x49B,0x41497,0xA4B,0xA164B, 0x6A5,0x6D4,0x615B4,0xAB6,0x957,0x5092F,0x497,0x64B, 0x30D4A,0xEA5,0x80D65,0x5AC,0xAB6,0x5126D,0x92E,0xC96,0x41A95,0xD4A,0xDA5,0x20B55,0x56A,0x7155B,0x25D,0x92D,0x5192B,0xA95,0xB4A,0x416AA,0xAD5,0x90AB5,0x4BA,0xA5B, 0x60A57,0x52B,0xA93,0x40E95);
	madd[0]=0;
	madd[1]=31;
	madd[2]=59;
	madd[3]=90;
	madd[4]=120;
	madd[5]=151;
	madd[6]=181;
	madd[7]=212;
	madd[8]=243;
	madd[9]=273;
	madd[10]=304;
	madd[11]=334;
	 
	function GetBit(m,n){
		return (m>>n)&1;
	}
	function e2c(){
		TheDate= (arguments.length!=3) ? new Date() : new Date(arguments[0],arguments[1],arguments[2]);
		var total,m,n,k;
		var isEnd=false;
		var tmp=TheDate.getYear();
		if(tmp<1900){
		 tmp+=1900;
		}
		total=(tmp-1921)*365+Math.floor((tmp-1921)/4)+madd[TheDate.getMonth()]+TheDate.getDate()-38;
		 
		if(TheDate.getYear()%4==0&&TheDate.getMonth()>1) {
		 total++;
		}
		for(m=0;;m++){
		 k=(CalendarData[m]<0xfff)?11:12;
		 for(n=k;n>=0;n--){
		if(total<=29+GetBit(CalendarData[m],n)){
		 isEnd=true; break;
		 }
		 total=total-29-GetBit(CalendarData[m],n);
		 }
		 if(isEnd) break;
		}
		cYear=1921 + m;
		cMonth=k-n+1;
		cDay=total;
		if(k==12){
		 if(cMonth==Math.floor(CalendarData[m]/0x10000)+1){
		 cMonth=1-cMonth;
		 }
		if(cMonth>Math.floor(CalendarData[m]/0x10000)+1){
		 cMonth--;
		 }
		}
	}
	 
	function GetcDateString(){
		var tmp="";
		if(cMonth<1){
			tmp+=monString.charAt(-cMonth-1);
		}else{
			tmp+=monString.charAt(cMonth-1);
		}
		tmp+="月";
		tmp+=(cDay<11)?"初":((cDay<20)?"十":((cDay<30)?"廿":"三十"));
		if(cDay%10!=0||cDay==10){
			tmp+=numString.charAt((cDay-1)%10);
		}
		return tmp;
	}
	
	var year = this.getFullYear();
	var month = this.getMonth()+1;
	var day = this.getDate();
	if(year<1921 || year>2020){
		return "";
	}else{
		month = (parseInt(month)>0) ? (month-1) : 11;
		e2c(year, month, day);
		return GetcDateString();
	}
};

Date.prototype.pattern = function(fmt) {
    var o = {         
	    "M+" : this.getMonth()+1, //月份         
	    "d+" : this.getDate(), //日         
	    "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时         
	    "H+" : this.getHours(), //小时         
	    "m+" : this.getMinutes(), //分         
	    "s+" : this.getSeconds(), //秒         
	    "q+" : Math.floor((this.getMonth()+3)/3), //季度         
	    "S" : this.getMilliseconds() //毫秒         
    };         
    var week = {         
	    "0" : "日",         
	    "1" : "一",         
	    "2" : "二",         
	    "3" : "三",         
	    "4" : "四",         
	    "5" : "五",         
	    "6" : "六"        
    };         
    if(/(y+)/.test(fmt)){         
        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));         
    }         
    if(/(E+)/.test(fmt)){         
        fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "星期" : "周") : "")+week[this.getDay()+""]);         
    }         
    for(var k in o){         
        if(new RegExp("("+ k +")").test(fmt)){         
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));         
        }         
    }         
    return fmt;         
}    